package zgrjb.snbq.teach_platform.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import zgrjb.snbq.teach_platform.service.DatabaseInitService;
import zgrjb.snbq.teach_platform.util.JsonData;

import java.util.Map;

/**
 * 数据库初始化控制器
 * 提供数据库初始化和数据统计功能
 */
@RestController
@RequestMapping("/api/v1/database")
@Slf4j
public class DatabaseInitController {

    @Autowired
    private DatabaseInitService databaseInitService;

    /**
     * 手动触发数据库初始化
     */
    @PostMapping("/init")
    public JsonData initDatabase() {
        try {
            log.info("手动触发数据库初始化...");
            databaseInitService.manualInit();
            return JsonData.buildSuccess("数据库初始化成功");
        } catch (Exception e) {
            log.error("数据库初始化失败", e);
            return JsonData.buildError("数据库初始化失败: " + e.getMessage());
        }
    }

    /**
     * 获取数据统计信息
     */
    @GetMapping("/stats")
    public JsonData getDataStats() {
        try {
            Map<String, Object> stats = databaseInitService.getDataStats();
            return JsonData.buildSuccess(stats);
        } catch (Exception e) {
            log.error("获取数据统计失败", e);
            return JsonData.buildError("获取数据统计失败: " + e.getMessage());
        }
    }

    /**
     * 检查数据库状态
     */
    @GetMapping("/status")
    public JsonData checkDatabaseStatus() {
        try {
            Map<String, Object> stats = databaseInitService.getDataStats();
            boolean hasData = (Integer) stats.get("conversationCount") > 0;
            
            Map<String, Object> status = Map.of(
                "hasData", hasData,
                "stats", stats,
                "message", hasData ? "数据库已初始化" : "数据库未初始化"
            );
            
            return JsonData.buildSuccess(status);
        } catch (Exception e) {
            log.error("检查数据库状态失败", e);
            return JsonData.buildError("检查数据库状态失败: " + e.getMessage());
        }
    }
} 